Типизация и типы данных
Целые и дробные числа, строки и списки, словари, множества, логические значения — это лишь часть типов данных, применяемых в Python.
Языки программирования распознают типы данных по определённым правилам, а набор этих правил устанавливается типизацией языка.
Типизация в Python
Говоря о типизации Python, можно сказать, что он относится к языкам:
- с неявной,
- сильной,
- динамической типизацией.
Явная и неявная типизация
Неявная типизация означает, что при объявлении переменной можно не указывать её тип. В языках с явной типизацией тип переменной обязательно указывается.
Объявление переменной в С++ (это язык с явной типизацией):
CPP
int a = 1; Объявление переменной в Python (это язык с неявной типизацией):
PYTHON
a = 1 # Light version, Python rules! Динамическая и статическая типизация
Python относится к языкам с динамической типизацией. Динамическая типизация — это приём, который используется в языках программирования. Его суть заключается в том, что переменная связывается с типом в момент присваивания значения, а не в момент объявления переменной. Это приводит к тому, что в разных участках программы одна и та же переменная может принимать значения разных типов.
Плюс такой типизации — при объявлении или переопределении переменной нет необходимости учитывать тип данных, которые будут в неё передаваться.
Минус динамической типизации в том, что в переменную может быть передано значение непредусмотренного типа и, в результате, может быть нарушена логика программы.
Сильная и слабая типизация
В языках с сильной типизацией нельзя смешивать в выражениях объекты различных типов; в таких языках не выполняются автоматические неявные преобразования.
Python — язык с сильной типизацией.
Что будет, если в Python сложить строку
str и целое число int?PYTHON
# Объявим переменную типа int
numeric = 1
print(type(numeric))
# Вывод в терминал: <class 'int'>
# Объявим переменную типа str
string = '2'
print(type(string))
# Вывод в терминал: <class 'str'>
# Сложим эти объекты:
print(numeric + string)
# Вывод в терминал:
# TypeError: unsupported operand type(s) for +: 'int' and 'str' Программа не может сложить число со строкой и завершается с ошибкой.
Слаботипизированные языки, в свою очередь могут выполнять множество неявных преобразований автоматически, даже если может произойти потеря точности или преобразование будет неоднозначно.
Например, в JavaScript, при сложении числа
1 и строки 'string' результатом будет строка '1string': числовой операнд будет автоматически приведён к строке и сложение пройдёт по правилам конкатенации строк; никакого исключения это не вызовет — программа продолжит выполняться.Типы данных Python
В Python типы данных можно разделить на встроенные в интерпретатор (built-in) и подключаемые, которые становятся доступны при импортировании соответствующих модулей.
Вот список часто используемых встроенных типов:
- None (неопределенное значение переменной).
- Логические переменные (Boolean Type).
- Числа (Numeric Type):
- int – целые числа;
- float – число с плавающей точкой;
- complex – комплексные числа.
- Последовательности (Sequence Type):
- list – список;
- tuple – кортеж;
- range – диапазон
- Строки (Text Sequence Type): str.
- Бинарные списки (Binary Sequence Types):
- bytes — байты;
- bytearray — массивы байт;
- memoryview — специальные объекты для доступа к внутренним данным объекта через protocol buffer.
- Множества (Set Types):
- set — множество;
- frozenset — неизменяемое множество.
- Словари (Mapping Types): dict.
Благодаря разделению данных на типы Python знает, как оптимально выделить память для хранения данных и какие операции допустимо выполнять с разными типами.
Приведите переменные к нужному типу, выполните необходимые операции над ними, передайте значения в f-строку и напечатайте фразу
Суммой чисел 1, 2 и 3 будет 6.В решении должны быть применены все три переменные; такое решение не будет принято:
PYTHON
print('Результатом сложения чисел 1, 2 и 3 будет 6') Подсказка
Задача в том, чтобы получить из переменных числовые значения
1, 2 и 3.Число
1 есть, оно хранится в переменной a.Получить из имеющихся данных целые числа
2 и 3 можно, например, так:- привести значение
bк целому числу; - привести второй элемент списка
cк целому числу.
Можно поискать и другое решение: например, получить тройку из
a и b.Код
xxxxxxxxxx6
1
a = 12
b = '2'3
c = ['Анатолий', 3.15, '3 поросёнка']4
5
result = f'Суммой чисел {}, {} и {} будет {}'6
print(result)